<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./lib/react.development.js"></script>
    <script src="./lib/react-dom.development.js"></script>
    <script src="./lib/babel.min.js"></script>
    <script src="./lib/prop-types.js"></script>
</head>

<body>
    <div id="root"></div>
    <script type="text/babel">
        // 子组件接收父组件传递过来的属性时，可以对其类型进行限制
        // 1- 引入prop-types.js文件
        // 2- 在接收属性的组件中进行限制
        //    2-1:限制类型
        //    2-2:限制默认值

        class App extends React.Component{
            render(){
                return(
                    <Child userName={'lalalala'} age={22} sex={'man'}/>
                )
            }
        }

        class Child extends React.Component{
        // 定义一个名字为propTypes的静态属性,值的类型是一个对象
            static propTypes={
                 // userName是组件要限制的属性名
                // PropTypes来自于prop-types.js文件
                userName:PropTypes.string,//限制userName属性值类型为字符串
                age:PropTypes.number.isRequired,//限制age属性值的类型为数字且不允许为undefined
            }
            static defaultProps={
                sex:"nv"//为属性sex增加默认值 nv
            }
            render(){
                return (
                    <div>
                        <p>{this.props.userName}</p>    
                        <p>{this.props.age}</p>    
                        <p>{this.props.sex}</p>    
                    </div>
                )
            }
        }

        ReactDOM.createRoot(document.querySelector('#root')).render(<App/>)
    </script>

</body>

</html>